﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using PSE.Framework.ErrorLogging;

namespace Sinacor.Infra.Common.Exceptions.FaultContracts
{
    /// <summary>
    /// Falta base para faltas com informações de log
    /// </summary>
    [DataContract(Namespace = "http://www.sinacor.com.br/Sinacor.Infra.Common.Exceptions.FaultContracts")]
    public abstract class BaseLogFault : BaseFault
    {
        private Uri _sourceAddress;
        /// <summary>
        /// Endereço do servidor de origem do erro
        /// </summary>
        [DataMember]
        public Uri SourceAddress
        {
            get { return _sourceAddress; }
            set { _sourceAddress = value; }
        }

        private string _logData;
        /// <summary>
        /// Informações do log
        /// </summary>
        [DataMember]
        public string LogData
        {
            get { return _logData; }
            set { _logData = value; }
        }

        /// <summary>
        /// Cria uma exceção a partir da falta
        /// </summary>
        /// <returns>Exceção com o erro</returns>
        public override BaseException CreateException()
        {
            BaseLogException ex = (BaseLogException)this.CreateExceptionInstance();

            ex.SourceAddress = this.SourceAddress;
            ex.LogData = this.LogData;

            return ex;
        }
    }
}
